package com.dragon.codefx.config;

import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import lombok.Setter;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.net.URL;

/**
 * 页面切换管理器
 * 负责管理不同页面之间的切换
 *
 * @author lsc
 * @since 2025/9/25
 */
@Setter
@Component
public class PageManager {

    /**
     * -- SETTER --
     * 设置主舞台
     */
    private Stage primaryStage;

    /**
     * 切换到指定页面
     *
     * @param fxmlFile FXML文件名
     * @param title    窗口标题
     */
    public void switchTo(String fxmlFile, String title) {
        try {
            // 从根类路径加载资源文件
            URL resource = PageManager.class.getResource( fxmlFile);
            if (resource == null) {
                System.err.println("找不到资源文件: " + fxmlFile);
                return;
            }
            FXMLLoader loader = new FXMLLoader(resource);
            Parent root = loader.load();

            Scene scene = new Scene(root, 800, 600);
            primaryStage.setScene(scene);
            primaryStage.setTitle(title);

        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("无法加载页面: " + fxmlFile);
        }
    }

    /**
     * 切换到首页
     */
    public void switchToHomePage() {
        switchTo("/fxml/IndexView.fxml", "首页");
    }

    /**
     * 切换到第二页
     */
    public void switchToSecondPage() {
        switchTo("pageChange/second-page.fxml", "第二页 - JavaFX Demo");
    }

    /**
     * 切换到第三页
     */
    public void switchToThirdPage() {
        switchTo("pageChange/third-page.fxml", "第三页 - JavaFX Demo");
    }
}